<script>
    /*
        ES6使用class关键字创建类
        在类里面写的时成员方法和属性
        成员方法中的this 指向的是生成的实例
        实例化的时候传入参数，会被constructor
        类里面的成员方法，最终会被挂在原型上 pototype，并且成员直接是通过this来沟通的
    */

    
//    let stu = new Studnt()
 
    class Fun{
        constructor(name,age){
            this.name=name
            this.age = age
            this.init()
            
        }
        init(){
            alert(`我叫${this.name}今年${this.age}岁`)
        }
   
    }
    var fun = new Fun("张三",20)
    console.log(fun);
  /*
    类的继承
    字类继承父类的属性和方法 父类·访问不到字类的属性和方法
     
  
  */
 //创建
  class Fn extends Fun{

    constrcouctor(name,age,className){
        // this 报错
        //因为字类 自己的 this对象 ，必须通过父类的构造函数完成构造，得到了与父类完全相同的成员属性和方法
        //再加上字类自己的成员属性个方法 不调用super（）方法 子类得不到this对象
        super(name,age) // 继承父类的形参 必须在constrcouctor 调用super（）方法否在会报错
        this.className= className
        this. init()
    }
    init(){
        console.log(this.className);
    }
  }
  let fn = new Fn("张三",18,"2009A")
  console.log(fn);

  /*
    父类不可以使用子类的方法 子类可以使用父类的方法 还可以重写父类的方法
    字类重写之后可以使用super访问父类的方法
  */
 console.log(fn instanceof Fn);
</script>